מבני נתונים ויעילות אלגוריתמים

Σχετικά έγγραφα
מבני נתונים ויעילות אלגוריתמים

מיונים א': מיון (Sorting) HeapSort. QuickSort תור עדיפויות / ערימה

פתרון תרגיל מרחבים וקטורים. x = s t ולכן. ur uur נסמן, ur uur לכן U הוא. ur uur. ur uur

מבני נתונים ואלגוריתמים תרגול #3 נושאים: תור קדימויות/ערימה, עצים

תרגול פעולות מומצאות 3

(2) מיונים השאלות. .0 left right n 1. void Sort(int A[], int left, int right) { int p;

ל הזכויות שמורות לדפנה וסטרייך

דוגמה: יהי T עץ בינארי כפי שמתואר בציור הבא:

= 2. + sin(240 ) = = 3 ( tan(α) = 5 2 = sin(α) = sin(α) = 5. os(α) = + c ot(α) = π)) sin( 60 ) sin( 60 ) sin(

חורף תש''ע פתרון בחינה סופית מועד א'

משוואות רקורסיביות רקורסיה זו משוואה או אי שוויון אשר מתארת פונקציה בעזרת ערכי הפונקציה על ארגומנטים קטנים. למשל: יונתן יניב, דוד וייץ

מבני נתונים 08a תרגול 8 14/2/2008 המשך ערמות ליאור שפירא

תרגיל 13 משפטי רול ולגראנז הערות

חידה לחימום. כתבו תכappleית מחשב, המקבלת כקלט את M ו- N, מחליטה האם ברצוappleה להיות השחקן הפותח או השחקן השappleי, ותשחק כך שהיא תappleצח תמיד.

לוגיקה ותורת הקבוצות פתרון תרגיל בית 8 חורף תשע"ו ( ) ... חלק ראשון: שאלות שאינן להגשה נפריד למקרים:

מבני נתונים הגבלת אחריות פרק - 1 אלגוריתמי מיון ואנליזה אסימפטוטית. מיון בועות Sort Bubble מאת : סשה גולדשטיין,

תרגול מס' 6 פתרון מערכת משוואות ליניארית

תוכן עניינים I בעיות מיון 2 1 סימון אסימפטוטי... 2 II מבני נתונים 20 8 מבני נתונים מופשטים משפט האב גרפים... 37

פתרון תרגיל 8. מרחבים וקטורים פרישה, תלות \ אי-תלות לינארית, בסיס ומימד ... ( ) ( ) ( ) = L. uuruuruur. { v,v,v ( ) ( ) ( ) ( )

תאריך הבחינה: שם המרצה: רפי כהן שם המתרגל: יסודות מבני נתונים שם הקורס:

פתרון תרגיל 5 מבוא ללוגיקה ותורת הקבוצות, סתיו תשע"ד

תוכן הפרק: ,best case, average case דוגמאות 1. זמן - נמדד באמצעות מס' פעולות סיבוכיות, דוגמאות, שיפור בפקטור קבוע האלגוריתם. וגודלם. איטרטיביים. לקלט.

gcd 24,15 = 3 3 =

מבני נתונים (234218) 1

צעד ראשון להצטיינות מבוא: קבוצות מיוחדות של מספרים ממשיים

חלק א' שאלה 3. a=3, b=2, k=0 3. T ( n) היותר H /m.

שדות תזכורת: פולינום ממעלה 2 או 3 מעל שדה הוא פריק אם ורק אם יש לו שורש בשדה. שקיימים 5 מספרים שלמים שונים , ראשוני. שעבורם

TECHNION - ISRAEL INSTITUTE OF TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE סמסטר אביב תשס"ו מס' סטודנט:

עץץץץ AVL. עץ AVL הוא עץ חיפוש בינארי שמקיים את התנאי הבא: לכל צומת x בעץ גורם האיזון של x הוא 1, 0, או 1-. הגדרה: במילים אחרות: לכל צומת x בעץ,

לוגיקה ותורת הקבוצות פתרון תרגיל בית 4 אביב תשע"ו (2016)

לדוגמה: במפורט: x C. ,a,7 ו- 13. כלומר בקיצור

Logic and Set Theory for Comp. Sci.

שאלה 1 V AB פתרון AB 30 R3 20 R

2 יח"ל ) השלמה ל - 5 יח"ל) (50 נקודות) מעבר חוקי, ו-'שקר' אחרת.

{ : Halts on every input}

פרק 13 רקורסיה רקורסיה רקורסיה רקורסיות פשוטות: חישוב עצרת. תמונת המחסנית ב-() factorial רקורסיות פשוטות: פיבונאצ'י

הגדרה: קבוצת פעילויות חוקית היא קבוצה בה כל שתי פעילויות

מבני נתונים אדמיניסטרציה ד"ר אלכס סמורודניצקי, רוס 210, שני 5:30 4:15. ציון:

דף פתרונות 7 נושא: תחשיב הפסוקים: צורה דיסיונקטיבית נורמלית, מערכת קשרים שלמה, עקביות

מתמטיקה בדידה תרגול מס' 13

מבני נתונים מבחן מועד ב' סמסטר חורף תשס"ו

[ ] Observability, Controllability תרגול 6. ( t) t t קונטרולבילית H למימדים!!) והאובז' דוגמא: x. נשתמש בעובדה ש ) SS rank( S) = rank( עבור מטריצה m

במשחקים בצורה אסטרטגית: השחקנים בוחרים אסטרטגיות במקביל ובצורה בלתי תלויה. מייד לאחר מכן מסתיים המשחק. נרצה לדון במשחקים מסוג אחר: השחקנים משחקים לפי

מתכנס בהחלט אם n n=1 a. k=m. k=m a k n n שקטן מאפסילון. אם קח, ניקח את ה- N שאנחנו. sin 2n מתכנס משום ש- n=1 n. ( 1) n 1

מבני נתונים מבחן מועד א' סמסטר אביב תשס"ו

( )( ) ( ) f : B C היא פונקציה חח"ע ועל מכיוון שהיא מוגדרת ע"י. מכיוון ש f היא פונקציהאז )) 2 ( ( = ) ( ( )) היא פונקציה חח"ע אז ועל פי הגדרת

יסודות לוגיקה ותורת הקבוצות למערכות מידע (סמסטר ב 2012)

תאריך עדכון אחרון: 27 בפברואר ניתוח לשיעורין analysis) (amortized הוא טכניקה לניתוח זמן ריצה לסדרת פעולות, אשר מאפשר קבלת

תורת הגרפים - סימונים

x a x n D f (iii) x n a ,Cauchy

ניתוח סיבוכיות - פונקציות רקורסיביות פיתוח טלסקופי

מבני נתונים עצים שיעור 7

פרק 8: עצים. .(Tree) במשפטים הגדרה: גרף ללא מעגלים נקרא יער. דוגמה 8.1: תרגילים: הקודקודים 2 ו- 6 בדוגמה הוא ).

אלגוריתמים קומבינטוריים סיכומים של תרגילי כיתה מסמסטרים קודמים בנושא מיון ובעיית הבחירה

תכנון אלגוריתמים 2016 עבודה 1 שאלה 1 פתרון נתונות שתי בעיות. יש למצוא: אורך מסלול קצר ביותר המתחיל באחד מן הקודקודים s 1,..., s k ומסתיים ב t.

חידה לחימום. כתבו תכנית שהקלט שלה הוא מספר שלם n,

פתרון תרגיל 6 ממשוואות למבנים אלגברה למדעי ההוראה.

תרגול 1 חזרה טורי פורייה והתמרות אינטגרליות חורף תשע"ב זהויות טריגונומטריות

פתרונות , כך שאי השוויון המבוקש הוא ברור מאליו ולכן גם קודמו תקף ובכך מוכחת המונוטוניות העולה של הסדרה הנתונה.

c ארזים 26 בינואר משפט ברנסייד פתירה. Cl (z) = G / Cent (z) = q b r 2 הצגות ממשיות V = V 0 R C אזי מקבלים הצגה מרוכבת G GL R (V 0 ) GL C (V )

אינפי - 1 תרגול בינואר 2012

תשובות מלאות לבחינת הבגרות במתמטיקה מועד ג' תשע"ד, מיום 0/8/0610 שאלונים: 315, מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן

Charles Augustin COULOMB ( ) קולון חוק = K F E המרחק סטט-קולון.

עצי 2-3 תזכורת: בנים. דוגמאות: Chapter 19: B trees ( ) Chapter 15: Augmenting data structures ( )

מבני נתונים. אחרי שלב זה המשיכו והריצו את מיון מהיר על המערך. תארו את כל שלבי הרקורסיה, אך עתה אין צורך להיכנס לתיאור הריצה של.

brookal/logic.html לוגיקה מתמטית תרגיל אלון ברוק

אלגוריתמים בתורת הגרפים חלק ראשון

co ארזים 3 במרץ 2016

תרגילים באמצעות Q. תרגיל 2 CD,BF,AE הם גבהים במשולש .ABC הקטעים. ABC D נמצאת על המעגל בין A ל- C כך ש-. AD BF ABC FME

תרגול משפט הדיברגנץ. D תחום חסום וסגור בעל שפה חלקה למדי D, ותהי F פו' וקטורית :F, R n R n אזי: נוסחת גרין I: הוכחה: F = u v כאשר u פו' סקלרית:

אלגברה מודרנית פתרון שיעורי בית 6

I. גבולות. x 0. מתקיים L < ε. lim אם ורק אם. ( x) = 1. lim = 1. lim. x x ( ) הפונקציה נגזרות Δ 0. x Δx

. {e M: x e} מתקיים = 1 x X Y

תרגיל 7 פונקציות טריגונומטריות הערות

השאלות ידי מצביעים לילדים.

סדרות - תרגילים הכנה לבגרות 5 יח"ל

םינותנ ינבמ 3 ליגרתמ תולאשל המוד תולאש טסל תונורתפ תולאשה

קבוצה היא שם כללי לתיאור אוסף כלשהו של איברים.

אסימפטוטיים תוכנית הקורס עצי AVL עצי 2-3 עצי דרגות סיבוכיות משוערכת מיון מיון שימושים: גרפים איסוף אשפה

אוניברסיטת בר אילן מבני נתונים תרגולים מרצה: פרופ' שמואל טומי קליין סמסטר ב', תש"ע

( n) ( ) ( ) שאלה 1: שאלה 2: שאלה 3: (n 5) = Θ. ב. אם f 1, f 2, g 1, g 2. .g 1 *g 2 = Ω(f 1 *f 2 ) , g. ג. ) n.n! = θ(n*2. n) f ( אז ד. אם ה. אם ו.

השאלות..h(k) = k mod m

מיון. 1 מיון ערימה (Heapsort) חלק I 1.1 הגדרת ערימה 0.1 הגדרה של המושג מיון מסקנה: הערך הכי גבוה בערימה נמצא בשורש העץ!

תורת הקבוצות תרגיל בית 2 פתרונות

אלגוריתמים בתורת הגרפים חלק שני

אלגברה ליניארית 1 א' פתרון 2

םינותנ ינבמ (הנכות ידימלתל)

אלגברה ליניארית (1) - תרגיל 6

מבחן מועד ב' בהצלחה! אנא קיראו היטב את ההוראות שלהלן: ודאו כי כל עמודי הבחינה נמצאים בידכם.

מינימיזציה של DFA מינימיזציה של הקנוני שאותה ראינו בסעיף הקודם. בנוסף, נוכיח את יחידות האוטומט המינימלי בכך שנראה שכל אוטומט על ידי שינוי שמות

פתרון תרגיל בית 6 מבוא לתורת החבורות סמסטר א תשע ז

1 תוחלת מותנה. c ארזים 3 במאי G מדיד לפי Y.1 E (X1 A ) = E (Y 1 A )

אלגברה א' - פתרונות לשיעורי הבית סמסטר חורף תשס"ט

Nir Adar גירסה 1.00 עמוד 1

סיכום בנושא של דיפרנציאביליות ונגזרות כיווניות

logn) = nlog. log(2n

מבני נתונים מבחן מועד א' סמסטר חורף תשס"ו

Nir Adar

סיכום- בעיות מינימוםמקסימום - שאלון 806

s ק"מ קמ"ש מ - A A מ - מ - 5 p vp v=

Transcript:

חידה לחימום בסל מקש יש צמר. כדורי 00 שני שחקנים משחקים בתורות: כל שחקן, בתורו, צריך להוציא כמות כלשהי של כדורי צמר מהסל לפחות כדור אחד, אך לא יותר ממחצית מכמות כדורי הצמר שבסל. מי שלא יכול לעשות מהלך (מתי זה יקרה?) מפסיד במשחק. פתחו אסטרטגיה מנצחת עבור אחד השחקנים במשחק.

. הגדרת הערימה בשיעור קודם קדימויות'. מבני נתונים ויעילות אלגוריתמים (4..05) ראינו מבני נתונים שונים למימוש טיפוס הנתונים המופשט (טנ"מ) 'תור הקרוי אחד ממבני הנתונים היעילים ביותר למימוש טנ"מ זה הוא מבנה נתונים הנקרא ערימה בינארית Heap),(Binary או בקיצור ערימה.(Heap) ערימה בינארית היא עץ בינארי כמעט שלם, הממומש באמצעות מערך, והמתאפיין בתכונה נוספת הנקראת תכונת הערימה Property).(Heap כזכור, עץ בינארי כמעט שלם הוא עץ שמלא לחלוטין בכל רמותיו, פרט אולי לאחרונה, המלאה משמאל ועד לנקודה מסוימת. יתאפיין בשתי התכונות הבאות: המערך,A A.length שבו נאחסן את איברי העץ הבינארי הכמעט שלם, מספר התאים במערך, A.heap-size מספר האיברים בערימה המאוחסנת ב- A. במילים אחרות, אף כי A[0..A.length-] זהו המערך כולו, איבר שנמצא אחרי A[A.heap-size-] אינו שייך לערימה. שורשו של העץ הוא [0]A, ובהינתן האינדקס i של צומת, אפשר לחשב בקלות את האינדקסים של אביו, של בנו השמאלי, ושל בנו הימני: LEFT(i) return i+ RIGHT(i) return i+ PARENT(i) return ( i ) / כעת, כדי שעץ בינארי כמעט שלם המיוצג במערך ייחשב כערימה, עליו לקיים את תכונת הערימה: לכל צומת i, פרט לשורש, מתקיים: A[i]. A[PARENT(i)] > כלומר, ערכו של כל צומת הוא לכל היותר ערכו של ההורה שלו. לפיכך, הערך הגדול ביותר בערימה מאוחסן בשורש, והערך שצומת מכיל הוא גדול או שווה לכל ערכי צאצאיו.

שאלה האם המערך (3,7,0,3,6,4) A מייצג ערימה? אם כן שרטטו את ייצוג הערימה כעץ בינארי כמעט שלם. מושג הערימה, כפי שהגדרנו אותו לעיל, נקרא ערימת מקסימום Heap).(Maximum קיים סוג נוסף של ערימה, הנקרא ערימת מינימום Heap),(Minimum שזהה בכל לערימת מקסימום, פרט לכך שתכונת הערימה נראית במקרה הזה כך: לכל צומת i, פרט לשורש, מתקיים: A[i]. A[PARENT(i)] < כלומר, ערכו של כל צומת הוא לכל הפחות ערכו של ההורה שלו. לפיכך, הערך הקטן ביותר בערימת מינימום מאוחסן בשורש, והערך שצומת מכיל הוא קטן או שווה מכל ערכי צאצאיו. שאלה א. ב. הראו שהמערך (,0,7,9,5,6,4,8,,3,) A מייצג ערימת מקסימום, ושרטטו את ייצוג הערימה כעץ בינארי כמעט שלם. הראו כיצד ניתן לסדר מחדש את האיברים במערך A, כך שהוא ייצג ערימת מינימום. שאלה א. ב. האם מערך הממוין בסדר יורד בהכרח מייצג ערימת מקסימום? האם מערך הממוין בסדר עולה בהכרח מייצג ערימת מינימום? בערימה בינארית מתקיימות שלוש הטענות הבאות: טענה : אם A הוא מערך המייצג ערימה בינארית, ואם נסמן ב- n את,A.heap-size אז כל האיברים שבמערך שנמצאים בין האינדקס n/ לבין האינדקס -n, הם עלים.. log n טענה : גובהה של ערימה בינארית בעלת n צמתים הוא n. h+ טענה 3: בערימה בינארית בעלת n צמתים, מספר הצמתים שגובהם h הוא לכל היותר 3

. שמירה על תכונת הערימה נכיר אלגוריתם חשוב לטיפול בערימות מקסימום בשם.MAX-HEAPIFY האלגוריתם מקבל כקלט מערך A ואינדקס i למערך. ההנחה על הקלט היא, שכאשר מתבצעת קריאה לאלגוריתם,MAX-HEAPIFY אז העצים הבינאריים המושרשים ב-( LEFT(i וב-( RIGHT(i מקסימום חוקיות, אולם ייתכן ש-[ A[i קטן מבניו, ובכך מפר את תכונת הערימה. MAX-HEAPIFY תפקידה של באינדקס i יהפוך לערימת מקסימום חוקית. הם ערימות הוא "להחליק" את A[i] במורד הערימה, עד שהתת-עץ המושרש MAX-HEAPIFY(A,i) L LEFT(i) R RIGHT(i) 3 if L < A.heap-size and A[L] > A[i] 4 then largest L 5 else largest i 6 if R < A.heap-size and A[R] > A[largest] 7 then largest R 8 if largest i 9 then SWAP(A[i],A[largest]) 0 MAX-HEAPIFY(A,largest ) נדגים את פעולת האלגוריתם MAX-HEAPIFY על מערך A המקיים 0 A.heap-size. אפשר לראות כי האיבר []A במערך הנתון מפר את תכונת הערימה, שכן הוא אינו גדול משני בניו: 3 החלפת []A ו-[ A[3 תוביל לכך שצומת אכן יקיים את תכונת הערימה, אולם צומת אינו מקיים אותה, ולכן - נבצע קריאה רקורסיבית.MAX-HEAPIFY(A,3) 4

החלפת A[8]-וA[3] זה בזה מסדרת את צומת 3, והקריאה הרקורסיבית אינה גורמת לשינוי נוסף. MAX-HEAPIFY(A,8) -9?n מהו זמן הריצה של האלגוריתם MAX-HEAPIFY על תת-עץ בגודל שורות אורכות זמן קבוע, וגודלו של העץ, עליו מפעילים את הזימון הרקורסיבי בשורה 0, הוא לכל היותר 3/n (זה קורה כאשר בדיוק מחצית מהשורה התחתונה בעץ היא מלאה, ומפעילים את הזימון הרקורסיבי על תת-העץ השמאלי). לכן, נוסחת הנסיגה המבטאת את זמן הריצה של האלגוריתם MAX-HEAPIFY היא: T(n) T(n/3) + Θ() לפי משפט האב, נקבל שהפתרון הוא Θ(logn),T(n) כלומר לוגריתמי במספר הצמתים בעץ (או: לינארי כגובהו של העץ.(Θ(h) שאלה MAX-HEAPIFY(A,) בעזרת שרטוט תארו את פעולת האלגוריתם כאשר מפעילים אותו על המערך (5,4,,9,8,0,,5,,7,8,8).A 5

3. בניית ערימה ניתן להשתמש באלגוריתם MAX-HEAPIFY מכיוון שהאיברים שנמצאים בין האינדקס כדי ליצור ערימת מקסימום ממערך.A[0..n-] n/ (אמצע המערך) לבין האינדקס (סוף -n המערך) הם כולם עלים של העץ, הרי שבתחילת התהליך כל אחד מהם הוא ערימת מקסימום בת איבר אחד. האלגוריתם BUILD-MAX-HEAP עובר על שאר הצמתים בעץ הבינארי, ומפעיל את MAX-HEAPIFY על כל אחד מהם. סדר המעבר על הצמתים, מהצמתים בעלי אינדקס גבוה לצמתים בעלי אינדקס נמוך (ובמערך זה בא לידי ביטוי במעבר מימין לשמאל) מבטיח שהתת- עצים המושרשים בבניו של צומת i הם ערימות מקסימום חוקיות, לפני ש- MAX-HEAPIFYמופעל על צומת זה. BUILD-MAX-HEAP(A) n A.heap-size A.length for i n / downto 0 3 do MAX-HEAPIFY(A,i) נדגים את פעולת האלגוריתם, על המערך הבא (בן 0 איברים) המייצג עץ בינארי כמעט שלם. ניתן לראות שהאינדקס i מקבל את הערך ההתחלתי 4 (באיטרציה הראשונה של הלולאה): כך נראה העץ לאחר קריאה אחת ל- MAX-HEAPIFY. האינדקס i יקבל כעת את הערך 3: כך יראה העץ באיטרציות הבאות של הלולאה. נשים לב שבכל פעם שמזמנים את MAX-HEAPIFY על צומת מסוים, אז שני תתי-העצים של הצומת הם ערימות מקסימום חוקיות: 6

מהי סיבוכיות זמן הריצה של האלגוריתם?BUILD-MAX-HEAP ניתן למצוא חסם עליון אסימפטוטי, באופן הבא: כל קריאה ל- MAX-HEAPIFY רצה בזמן לוגריתמי ויש /n קריאות כאלה, לכן החסם העליון הוא.O(nlogn) חסם זה, הגם שהוא נכון, איננו חסם הדוק. לצורך מציאת החסם ההדוק, יהיה עלינו להיעזר, בנוסף לטענות שראינו לעיל, גם בנוסחה הבאה: x x ( x) טענה :4 אם מתקיים < x, אז כעת, נוכל לקבל חסם הדוק יותר, אם נשים לב כי זמן הריצה של MAX-HEAPIFY על צומת משתנה עם גובה הצומת בעץ, וכי רוב הצמתים אינם גבוהים. נסתמך על שתי הטענות הבאות: גובהה של ערימה בת n איברים הוא היותר log n. n h +, ומספר הצמתים בכל גובה h בערימה כזו הוא לכל הזמן הדרוש להרצת MAX-HEAPIFY על צומת שגובהו h הוא,Θ(h) ולכן מתקיים גם.O(h) 7

ניתן לבטא את זמן הריצה הכולל של האלגוריתם BUILD-MAX-HEAP באופן הבא: + יש לכל היותר יש לכל היותר יש לכל היותר... יש לכל היותר n צמתים בגובה, ועבור כל אחד מהם מבצעים ()O פעולות. n צמתים בגובה, ועבור כל אחד מהם מבצעים ()O פעולות. n צמתים בגובה 3, ועבור כל אחד מהם מבצעים (3)O פעולות., ועבור כל אחד מבצעים O(logn) פעולות. log n צמתים בגובה n + 3+ log n + logn h n O( h) h+ נסכם הכול יחד, ונקבל: נכניס את הסכום לתוך הסימון האסימפטוטי O, ונקבל: O( logn h n ( h h + )) ניתן להשמיט את ערך התקרה מבלי לפגום בנכונות הטענה: O( O( logn h logn h O( n n ( h ( logn h h h+ n h+ h h + )) כפל זו פעולה המקיימת את חוק החילוף: )) ) ניתן להוציא את n אל מחוץ לסכום: 8

כדי למצוא חסם עליון לסכום שבסוגריים, ניעזר בטענה 4: x 0.5 0.5 ( 0.5) x ( x) 0.5 ( 0.5) 0.5 0.5 נציב 0.5,x ונקבל: O( n logn h + ואת השיוויון כעת: אפשר לחלק ב-, ואז נקבל: h h ) O( n ) O( n ) O( n) h + h+ h בסך הכל, הראינו שזמן הריצה של האלגוריתם BUILD-MAX-HEAP חסום מלמעלה על-ידי ביטוי לינארי. מאידך, ברור שהוא חסום גם מלמטה על-ידי ביטוי לינארי (כי עוברים בלולאה על /n איברים במערך). מכך שמתקיים גם O(n) וגם Ω(n), נסיק שמתקיים Θ(n). 4. מיון-ערימה ערימה היא מבנה נתונים שניתן להשתמש בו כדי לממש אלגוריתם מיון יעיל, הנקרא 'מיון ערימה' Sort).(Heap בהינתן מערך, נפעיל את BUILD-MAX-HEAP כדי להפוך אותו לערימת מקסימום. כעת, האיבר הגדול ביותר במערך מאוחסן ב-[ A[0. ניתן להציב אותו במקומו הסופי הנכון, על-ידי החלפתו עם.A[n-] נשים לב שאם "מסלקים" עכשיו את הצומת n מן הערימה, על-ידי הקטנת A.heap-size ב-, אפשר להפוך בקלות את A[0..n-] לערימה חוקית: בניו של השורש נותרו ערימות חוקיות, אולם ייתכן שהשורש החדש מפר את תכונת הערימה. כל מה שדרוש כדי להחזיר את תכונת הערימה, זו 9

קריאה ל-( MAX-HEAPIFY(A,0. עם סיום הקריאה, A[0..n-] יכיל ערימת מקסימום חוקית המורכבת מ- n- איברים. על ערימה זו נוכל לחזור על התהליך שוב ושוב, ובכל פעם הערימה תקטן באיבר אחד. HEAP-SORT(A) BUILD-MAX-HEAP(A) for i A.length- downto 3 do SWAP(A[0],A[i]) 4 A.heap-size A.heap-size 5 MAX-HEAPIFY(A,0) נדגים את פעולת האלגוריתם למיון-ערימה : 0

מהי סיבוכיות זמן הריצה של האלגוריתם? צעד מספר אורך זמן לינארי, וכל אחת מ- n- הקריאות ל- MAX-HEAPIFY מתבצעת בזמן לוגריתמי לגודל הערימה, אבל על ערימה שגובהה הולך וקטן. סך כל הפעולות שמתבצעות על-ידי זימונים אלו הוא: log( n ) + log( n ) + log( n 3) +... + log() + log() log(( n ) ( n )... ) log(( n )!) n! log( ) n log( n!) logn Θ( nlogn) logn Θ( nlogn) לכן, בסך-הכול, הסיבוכיות של מיון-ערימה היא logn). Θn ( 5. תור קדימויות מבנה הנתונים 'ערימה בינארית' מהווה דרך טובה מאוד לממש את טיפוס הנתונים המופשט 'תור קדימויות'. לשם כך, עלינו לספק מימוש לשלוש פעולות הממשק הבאות: הוספת איבר חדש, אחזור ערכו של האיבר המקסימלי, והוצאת האיבר המקסימלי. אחזור ערכו של האיבר המקסימלי ימומש בצורה טריוויאלית, ובזמן קבוע ()Θ, באופן הבא: MAXIMUM(A) return A[0] את הפעולה של הוצאת האיבר המקסימלי נממש כך: HEAP-EXTRACT-MAX(A) max A[0] A[0] A[A.heap-size-] 3 A.heap-size A.heap-size 4 MAX-HEAPIFY(A,0) 5 return max

ש, ברור שסיבוכיות זמן הריצה של הפעולה מהזימון של HEAP-EXTRACT-MAX היא, Θ(log n) שכן לבד,MAX-HEAPIFY המתבצע בזמן לוגריתמי, כל יתר הפעולות מתבצעות בזמן קבוע. שאלה הדגימו את פעולת האלגוריתם HEAP-EXTRACT-MAX על המערך (0,7,5,,6,4).A את הפעולה של הוספת איבר חדש ל- A, בעל עדיפות,ey נממש באמצעות הוספת עלה חדש לעץ. לאחר מכן, נסרוק מסלול מהעלה הזה לעבר השורש, כדי למצוא מקום מתאים לאיבר החדש: HEAP-MAX-INSERT(A,ey) A.heap-size A.heap-size + i A.heap-size- 3 while i > 0 and A[PARENT(i)] < ey 4 do A[i] A[PARENT(i)] 5 i PARENT(i) 6 A[i] ey זמן ריצת האלגוריתם על ערימה בת n איברים הוא (n Θ(log כן אורכו של המסלול מן העלה החדש ועד לשורש הוא (n. Θ(log HEAP-MAX-INSERT שאלה הדגימו את פעולת האלגוריתם על המערך (,8,9,6,7,3,5,,4,) A.